A Futures Library and Parallelism Abstractions for a Functional Subset of Lisp
نویسندگان
چکیده
This paper discusses Lisp primitives and abstractions developed to support the parallel execution of a functional subset of Lisp, specifically ACL2. We (1) introduce our Lisp primitives (futures) (2) present our abstractions built on top of these primitives (spec-mvlet and plet+), and (3) provide performance results.
منابع مشابه
EULISP Threads: A Concurrency Toolbox
Many current high level languages have been designed with support for con-currency in mind, providing constructs for the programmer to build explicit parallelism into a program. The EuLisp threads mechanism, in conjunction with locks, and a generic event waiting operation provides a set of primitive tools with which such concurrency abstractions can be constructed. The object system (TELOS) pro...
متن کاملImplementing a Parallelism Library for a Functional Subset of LISP
This paper discusses four primitives supporting parallel evaluation for a functional subset of LISP, specifically that subset supported by the ACL2 theorem prover. These primitives can be used to provide parallel execution for functions free from side effects without considering race conditions, deadlocks, and other common parallelism pitfalls. We (1) introduce logical definitions for these pri...
متن کاملImplicit Parallelism in a Functional Subset of Scala
In this paper, we describe our approach to implicitly parallelizing programs written in a functional subset of Scala characterized by the single assignment rule. Our functional programming model is supported by a functional subset of Scala based on our past experiences with the Sisal language and the functional language level of DrJava. We automatically parallelize functional Scala programs by ...
متن کاملLecture Notes on Futures 15-312: Foundations of Programming Languages
In this lecture we first examine a technique to specify the operational semantics for lazy evaluation. This is an implementation technique for a call-by-name semantics that avoids re-evaluating expressions multiple times by memoizing the result of the first evaluation. Then we use a similar technique to specify the meaning of futures, a construct that introduces parallelism into evaluation. Fut...
متن کاملNotes on Futures 15 - 312 : Foundations of Programming Languages
In this lecture we first examine a technique to specify the operational semantics for lazy evaluation. This is an implementation technique for a call-by-name semantics that avoids re-evaluating expressions multiple times by memoizing the result of the first evaluation. Then we use a similar technique to specify the meaning of futures, a construct that introduces parallelism into evaluation. Fut...
متن کامل